package com.milkcoffee.designpatterns.singleton;

/**
 * @author zxs
 */
public class InnerClassSingletonTest {
    public static void main(String[] args) {
        /**
         * 为何static就能保证线程安全不会出现多个实例呢？
         *  这个和static变量的初始化时机有关主要的理由如下:
         *  1 由于构造函数是私有的外部不能直接调用构造方法
         *  2 在实体getInstance的时候，根据JVM在初始化的时候会调用构造方法创建对象
         *  3 在外部在一次使用的时候，类已经被类加载器加载到内存中不会再一次加载因此保证了只会存在一个
         */
        InnerClassSingleton instance = InnerClassSingleton.getInstance();
        InnerClassSingleton instance1 = InnerClassSingleton.getInstance();

        System.out.println(instance);
        System.out.println(instance1);
    }
}
